'use strict'
module.exports = {
  tags: {
    // JSDoc 允许你使用未识别的标签
    allowUnknownTags: true,
    // 仅支持JSDoc的标准标签、closure
    dictionaries: ['jsdoc', 'closure']
  },
  // JSDoc 支持使用 ES2015 modules的代码 (sourceType).
  sourceType: 'module',
  // source选项组，结合给JSDoc命令行的路径，确定哪些文件要用JSDoc生成文档。
  source: {
    // JSDoc应该为它们生成文档，如果路径是一个目录，可以使用-r选项来递归。
    include: ['src/'],
    // JSDoc应该忽略的路径，该数组可包括source.include路径中的子目录
    exclude: [],
    // 仅后缀名为 .js, .jsdoc, and .jsx的文件会被处理
    includePattern: '.+\\.js(doc|x)?$',
    // 任何以下划线开始的文件或目录将会被忽略
    excludePattern: '(^|\\/|\\\\)_'
    //以命令行上给定的路径开始，并且在source.include中的所有文件（记得，使用-r命令行选项将在子目录中搜索）。
    // 对于在步骤1中找到的每个文件，如果正则表达式source.includePattern存在，该文件必须匹配，否则将被忽略。
    // 于在步骤2中遗留下的每个文件，如果正则表达式source.excludePattern存在，任何匹配这个正则表达式的文件将被忽略。
    // 对于在步骤3中遗留下的每个文件，如果路径在source.exclude中，那么它将被忽略。
  },
  // 插件
  plugins: ['plugins/markdown'],
  // 你可以把许多JSDoc的命令行选项放到配置文件，而不用在命令行中指定它们。要做到这一点，只要在conf.json的opts部分中使用的相关选项
  opts: {
    // 相当于命令行 -t ./node_modules/minami
    template: './node_modules/minami',
    // 相当于命令行 -e utf8
    encoding: 'utf8',
    // 保存文档html的路径，相当于命令行 -d minami-docs/
    destination: 'api_docs/',
    // 相当于命令行 --private
    private: true,
    // 相当于命令行 -r
    recurse: true,
    // 相当于命令行 --verbose
    verbose: true
    // -a <value>, --access <value>	只显示特定access方法属性的标识符： private, protected, public, 或 undefined, 或者 all（表示所有的访问级别）。默认情况下， 显示除private标识符以外的所有标识符。
    // -c <value>, --configure <value>	JSDoc 配置文件的路径。默认为安装JSDoc目录下的conf.json或conf.json.EXAMPLE。
    // -d <value>, --destination <value>	输出生成文档的文件夹路径。JSDoc内置的Haruki模板，使用console 将数据转储到控制台。默认为./out。
    // --debug	打印日志信息，可以帮助调试JSDoc本身的问题。
    // -e <value>, --encoding <value>	当JSDoc阅读源代码时假定使用这个编码，默认为 utf8.
    // -h, --help	显示JSDoc的命令行选项的信息，然后退出。
    // --match <value>	只有运行测试，其名称中包含 value.
    // --nocolor	当运行测试时，在控制台输出信息不要使用的颜色。在Windows中，这个选项是默认启用的。
    // -p, --private	将标记有[@private 标签][tags-private.md]的标识符也生成到文档中。默认情况下，不包括私有标识符。
    // -P, --package	包含项目名称，版本，和其他细节的package.json文件。默认为在源路径中找到的第一个package.json文件。
    // --pedantic	将错误视为致命错误，将警告视为错误。默认为 false。
    // -q <value>, --query <value>	一个查询字符串用来解析和存储到全局变量 env.opts.query中。示例: foo=bar&baz=true.
    // -r, --recurse	扫描源文件和导览时递归到子目录。
    // -R, --readme	用来包含到生成文档的README.md文件。默认为在源路径中找到的第一README.md文件。
    // -t <value>, --template <value>	用于生成输出文档的模板的路径。默认为templates/default，这是JSDoc内置的默认模板。
    // -T, --test	运行JSDoc的测试套件，并把结果打印到控制台。
    // -u <value>, --tutorials <value>	导览路径，JSDoc要搜索的目录。如果省略，将不生成导览页。查看导览说明，以了解更多信息。
    // -v, --version	显示JSDoc的版本号，然后退出。
    // --verbose	日志的详细信息到控制台JSDoc运行。默认为false.
    // -X, --explain	以JSON格式转储所有的doclet到控制台，然后退出。
  },
  // JSDoc的递归深度为10
  recurseDepth: 10,
  templates: {
    // 内联 {@link} 标签 以纯文本的方式被渲染
    cleverLinks: false,
    monospaceLinks: true,
    useLongnameInNav: false,
    showInheritedInNav: true
    // default: {
    //   outputSourceFiles: true
    // }
  }
}
